package com.chengyu.eyc.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;

import org.springframework.format.annotation.DateTimeFormat;

import com.chengyu.eyc.utils.EycGenId;
import com.fasterxml.jackson.annotation.JsonFormat;

import tk.mybatis.mapper.annotation.KeySql;

@Table(name = "eyc_coupon_rule")
public class EycCouponRule extends BaseModel implements Serializable {
    @KeySql(genId = EycGenId.class)
    @Id
    @Column(name = "EYC_COUPON_RULE_ID")
    private String eycCouponRuleId;

    /**
     * 优惠券代码
     */
    @Column(name = "TYPE_CDE")
    private String typeCde;

    /**
     * 优惠券名
     */
    @Column(name = "TYPE_NME")
    private String typeNme;

    /**
     * 优惠券类型。eyc_data_config.DC_TYPE_CODE='COUPON_TYPE'
     */
    @Column(name = "SUB_TYPE_CDE")
    private String subTypeCde;

    /**
     * 优惠券只适用验车；
理车券适用业务类型(洗车、加油、美容和其他，4种类型)，空表示全场通用
     */
    @Column(name = "SUB_TYPE_NME")
    private String subTypeNme;

    /**
     * 开始发放时间
     */
    @Column(name = "START_TIME")
    private Date startTime;

    /**
     * 发放截止时间。为空表示永续发放，直到发放完毕
     */
    @Column(name = "CLOSING_TIME")
    private Date closingTime;

    /**
     * 适用车型
     */
    @Column(name = "VEHICLE_TYPE")
    private String vehicleType;

    /**
     * 适用车型名称
     */
    @Column(name = "VEHICLE_TYPE_NME")
    private String vehicleTypeNme;

    /**
     * 适用的检测站。没有，标识全场通用。保存eyc_insp_station表的主键。
     */
    @Column(name = "AP_INSP_STATION")
    private String apInspStation;

    /**
     * 适用的汽车店。没有，标识全场通用。保存eyc_other_shop表的主键
     */
    @Column(name = "AP_SHOP")
    private String apShop;

    /**
     * 领取后永久有效
     */
    @Column(name = "IS_PV")
    private Boolean isPv;

    /**
     * 截止日前有效
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @Column(name = "EXPIRING_DT")
    private Date expiringDt;

    /**
     * 领取后一段时间有效，填写数字，有后面的时间单位配合使用
     */
    @Column(name = "AFTER_REC")
    private Integer afterRec;

    /**
     * 时间单位(小时，天)
     */
    @Column(name = "TIME_UNIT")
    private String timeUnit;

    /**
     * 批次号，一般用发布月份
     */
    @Column(name = "BATCH_NUM")
    private String batchNum;

    /**
     * 起始编号
     */
    @Column(name = "BEGIN_NUM")
    private String beginNum;

    /**
     * 总发放数量
     */
    @Column(name = "QTY")
    private Integer qty;

    /**
     * 已经发放数量
     */
    @Column(name = "ISSUED_QTY")
    private Integer issuedQty;

    /**
     * 单张抵扣金额
     */
    @Column(name = "AMOUNT")
    private Integer amount;

    /**
     * 是否发布
     */
    @Column(name = "IS_ACTIVE")
    private Boolean isActive;

    /**
     * 说明
     */
    @Column(name = "REMARK")
    private String remark;

    private static final long serialVersionUID = 1L;

    /**
     * @return EYC_COUPON_RULE_ID
     */
    public String getEycCouponRuleId() {
        return eycCouponRuleId;
    }

    /**
     * @param eycCouponRuleId
     */
    public void setEycCouponRuleId(String eycCouponRuleId) {
        this.eycCouponRuleId = eycCouponRuleId == null ? null : eycCouponRuleId.trim();
    }

    /**
     * 获取优惠券代码
     *
     * @return TYPE_CDE - 优惠券代码
     */
    public String getTypeCde() {
        return typeCde;
    }

    /**
     * 设置优惠券代码
     *
     * @param typeCde 优惠券代码
     */
    public void setTypeCde(String typeCde) {
        this.typeCde = typeCde == null ? null : typeCde.trim();
    }

    /**
     * 获取优惠券名
     *
     * @return TYPE_NME - 优惠券名
     */
    public String getTypeNme() {
        return typeNme;
    }

    /**
     * 设置优惠券名
     *
     * @param typeNme 优惠券名
     */
    public void setTypeNme(String typeNme) {
        this.typeNme = typeNme == null ? null : typeNme.trim();
    }

    /**
     * 获取优惠券类型。eyc_data_config.DC_TYPE_CODE='COUPON_TYPE'
     *
     * @return SUB_TYPE_CDE - 优惠券类型。eyc_data_config.DC_TYPE_CODE='COUPON_TYPE'
     */
    public String getSubTypeCde() {
        return subTypeCde;
    }

    /**
     * 设置优惠券类型。eyc_data_config.DC_TYPE_CODE='COUPON_TYPE'
     *
     * @param subTypeCde 优惠券类型。eyc_data_config.DC_TYPE_CODE='COUPON_TYPE'
     */
    public void setSubTypeCde(String subTypeCde) {
        this.subTypeCde = subTypeCde == null ? null : subTypeCde.trim();
    }

    /**
     * 获取优惠券只适用验车；
理车券适用业务类型(洗车、加油、美容和其他，4种类型)，空表示全场通用
     *
     * @return SUB_TYPE_NME - 优惠券只适用验车；
理车券适用业务类型(洗车、加油、美容和其他，4种类型)，空表示全场通用
     */
    public String getSubTypeNme() {
        return subTypeNme;
    }

    /**
     * 设置优惠券只适用验车；
理车券适用业务类型(洗车、加油、美容和其他，4种类型)，空表示全场通用
     *
     * @param subTypeNme 优惠券只适用验车；
理车券适用业务类型(洗车、加油、美容和其他，4种类型)，空表示全场通用
     */
    public void setSubTypeNme(String subTypeNme) {
        this.subTypeNme = subTypeNme == null ? null : subTypeNme.trim();
    }

    /**
     * 获取开始发放时间
     *
     * @return START_TIME - 开始发放时间
     */
    public Date getStartTime() {
        return startTime;
    }

    /**
     * 设置开始发放时间
     *
     * @param startTime 开始发放时间
     */
    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    /**
     * 获取发放截止时间。为空表示永续发放，直到发放完毕
     *
     * @return CLOSING_TIME - 发放截止时间。为空表示永续发放，直到发放完毕
     */
    public Date getClosingTime() {
        return closingTime;
    }

    /**
     * 设置发放截止时间。为空表示永续发放，直到发放完毕
     *
     * @param closingTime 发放截止时间。为空表示永续发放，直到发放完毕
     */
    public void setClosingTime(Date closingTime) {
        this.closingTime = closingTime;
    }

    /**
     * 获取适用车型
     *
     * @return VEHICLE_TYPE - 适用车型
     */
    public String getVehicleType() {
        return vehicleType;
    }

    /**
     * 设置适用车型
     *
     * @param vehicleType 适用车型
     */
    public void setVehicleType(String vehicleType) {
        this.vehicleType = vehicleType == null ? null : vehicleType.trim();
    }

    /**
     * 获取适用车型名称
     *
     * @return VEHICLE_TYPE_NME - 适用车型名称
     */
    public String getVehicleTypeNme() {
        return vehicleTypeNme;
    }

    /**
     * 设置适用车型名称
     *
     * @param vehicleTypeNme 适用车型名称
     */
    public void setVehicleTypeNme(String vehicleTypeNme) {
        this.vehicleTypeNme = vehicleTypeNme == null ? null : vehicleTypeNme.trim();
    }

    /**
     * 获取适用的检测站。没有，标识全场通用。保存eyc_insp_station表的主键。
     *
     * @return AP_INSP_STATION - 适用的检测站。没有，标识全场通用。保存eyc_insp_station表的主键。
     */
    public String getApInspStation() {
        return apInspStation;
    }

    /**
     * 设置适用的检测站。没有，标识全场通用。保存eyc_insp_station表的主键。
     *
     * @param apInspStation 适用的检测站。没有，标识全场通用。保存eyc_insp_station表的主键。
     */
    public void setApInspStation(String apInspStation) {
        this.apInspStation = apInspStation == null ? null : apInspStation.trim();
    }

    /**
     * 获取适用的汽车店。没有，标识全场通用。保存eyc_other_shop表的主键
     *
     * @return AP_SHOP - 适用的汽车店。没有，标识全场通用。保存eyc_other_shop表的主键
     */
    public String getApShop() {
        return apShop;
    }

    /**
     * 设置适用的汽车店。没有，标识全场通用。保存eyc_other_shop表的主键
     *
     * @param apShop 适用的汽车店。没有，标识全场通用。保存eyc_other_shop表的主键
     */
    public void setApShop(String apShop) {
        this.apShop = apShop == null ? null : apShop.trim();
    }

    /**
     * 获取领取后永久有效
     *
     * @return IS_PV - 领取后永久有效
     */
    public Boolean getIsPv() {
        return isPv;
    }

    /**
     * 设置领取后永久有效
     *
     * @param isPv 领取后永久有效
     */
    public void setIsPv(Boolean isPv) {
        this.isPv = isPv;
    }

    /**
     * 获取截止日前有效
     *
     * @return EXPIRING_DT - 截止日前有效
     */
    public Date getExpiringDt() {
        return expiringDt;
    }

    /**
     * 设置截止日前有效
     *
     * @param expiringDt 截止日前有效
     */
    public void setExpiringDt(Date expiringDt) {
        this.expiringDt = expiringDt;
    }

    /**
     * 获取领取后一段时间有效，填写数字，有后面的时间单位配合使用
     *
     * @return AFTER_REC - 领取后一段时间有效，填写数字，有后面的时间单位配合使用
     */
    public Integer getAfterRec() {
        return afterRec;
    }

    /**
     * 设置领取后一段时间有效，填写数字，有后面的时间单位配合使用
     *
     * @param afterRec 领取后一段时间有效，填写数字，有后面的时间单位配合使用
     */
    public void setAfterRec(Integer afterRec) {
        this.afterRec = afterRec;
    }

    /**
     * 获取时间单位(小时，天)
     *
     * @return TIME_UNIT - 时间单位(小时，天)
     */
    public String getTimeUnit() {
        return timeUnit;
    }

    /**
     * 设置时间单位(小时，天)
     *
     * @param timeUnit 时间单位(小时，天)
     */
    public void setTimeUnit(String timeUnit) {
        this.timeUnit = timeUnit == null ? null : timeUnit.trim();
    }

    /**
     * 获取批次号，一般用发布月份
     *
     * @return BATCH_NUM - 批次号，一般用发布月份
     */
    public String getBatchNum() {
        return batchNum;
    }

    /**
     * 设置批次号，一般用发布月份
     *
     * @param batchNum 批次号，一般用发布月份
     */
    public void setBatchNum(String batchNum) {
        this.batchNum = batchNum == null ? null : batchNum.trim();
    }

    /**
     * 获取起始编号
     *
     * @return BEGIN_NUM - 起始编号
     */
    public String getBeginNum() {
        return beginNum;
    }

    /**
     * 设置起始编号
     *
     * @param beginNum 起始编号
     */
    public void setBeginNum(String beginNum) {
        this.beginNum = beginNum == null ? null : beginNum.trim();
    }

    /**
     * 获取总发放数量
     *
     * @return QTY - 总发放数量
     */
    public Integer getQty() {
        return qty;
    }

    /**
     * 设置总发放数量
     *
     * @param qty 总发放数量
     */
    public void setQty(Integer qty) {
        this.qty = qty ;
    }

    /**
     * 获取已经发放数量
     *
     * @return ISSUED_QTY - 已经发放数量
     */
    public Integer getIssuedQty() {
        return issuedQty;
    }

    /**
     * 设置已经发放数量
     *
     * @param issuedQty 已经发放数量
     */
    public void setIssuedQty(Integer issuedQty) {
        this.issuedQty = issuedQty;
    }

    /**
     * 获取单张抵扣金额
     *
     * @return AMOUNT - 单张抵扣金额
     */
    public Integer getAmount() {
        return amount;
    }

    /**
     * 设置单张抵扣金额
     *
     * @param amount 单张抵扣金额
     */
    public void setAmount(Integer amount) {
        this.amount = amount;
    }

    /**
     * 获取是否发布
     *
     * @return IS_ACTIVE - 是否发布
     */
    public Boolean getIsActive() {
        return isActive;
    }

    /**
     * 设置是否发布
     *
     * @param isActive 是否发布
     */
    public void setIsActive(Boolean isActive) {
        this.isActive = isActive;
    }

    /**
     * 获取说明
     *
     * @return REMARK - 说明
     */
    public String getRemark() {
        return remark;
    }

    /**
     * 设置说明
     *
     * @param remark 说明
     */
    public void setRemark(String remark) {
        this.remark = remark == null ? null : remark.trim();
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", eycCouponRuleId=").append(eycCouponRuleId);
        sb.append(", typeCde=").append(typeCde);
        sb.append(", typeNme=").append(typeNme);
        sb.append(", subTypeCde=").append(subTypeCde);
        sb.append(", subTypeNme=").append(subTypeNme);
        sb.append(", startTime=").append(startTime);
        sb.append(", closingTime=").append(closingTime);
        sb.append(", vehicleType=").append(vehicleType);
        sb.append(", vehicleTypeNme=").append(vehicleTypeNme);
        sb.append(", apInspStation=").append(apInspStation);
        sb.append(", apShop=").append(apShop);
        sb.append(", isPv=").append(isPv);
        sb.append(", expiringDt=").append(expiringDt);
        sb.append(", afterRec=").append(afterRec);
        sb.append(", timeUnit=").append(timeUnit);
        sb.append(", batchNum=").append(batchNum);
        sb.append(", beginNum=").append(beginNum);
        sb.append(", qty=").append(qty);
        sb.append(", issuedQty=").append(issuedQty);
        sb.append(", amount=").append(amount);
        sb.append(", isActive=").append(isActive);
        sb.append(", remark=").append(remark);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}